package com.brillilab.domain.po.kit;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.brillilab.domain.po.system.FileManage;

import lombok.Data;

/**
 * 试剂质粒
 * 
 * @author lj
 *
 */
@Data
@TableName("reagent_plasmid")
public class ReagentPlasmid implements Serializable {

	private static final long serialVersionUID = 1L;
	/**
	 * 试剂质粒ID
	 */
	@TableId(type = IdType.AUTO)
	private Long id;
	/**
	 * 实验室ID（为空表示公共模版）
	 */
	private Long labId;
	/**
	 * kitId
	 */
	private Long kitId;
	/**
	 * 试剂ID
	 */
	private Long reagentId;
	/**
	 * 质粒名称
	 */
	private String plasmidName;
	/**
	 * 骨架质粒名称
	 */
	private String skeletonPlasmidName;
	/**
	 * 基础质粒长度
	 */
	private String basalPlasmidLength;
	/**
	 * 启动子
	 */
	private String promoter;
	/**
	 * 分类
	 */
	private String classify;
	/**
	 * 原核扩增抗性
	 */
	private String prokaryoticResistance;
	/**
	 * 真核表达筛选抗性
	 */
	private String eukaryoticResistance;
	/**
	 * 表达标签
	 */
	private String label;
	/**
	 * 上游测序引物
	 */
	private String upstreamPrimers;
	/**
	 * 下游测序引物
	 */
	private String downstreamPrimers;
	/**
	 * 克隆宿主
	 */
	private String clonedHost;
	/**
	 * 表达宿主
	 */
	private String expressionHost;
	/**
	 * 拷贝水平
	 */
	private String copyLevel;
	/**
	 * 质粒类型
	 */
	private String plasmidType;
	/**
	 * 组成型/诱导型
	 */
	private String constitutive;
	/**
	 * 诱导方法
	 */
	private String inductionMethod;
	/**
	 * 克隆方法
	 */
	private String clonedMethod;

	private String atlasFile;
	private String reportFile;
	private String abstractFile;
	private String otherFile;
	
	/** 创建时间 */
	private Date createTime;

	/** 修改时间 */
	private Date updateTime;

	/**
	 * 模版ID
	 */
	@TableField(exist = false)
	private Long templateId;
	/**
	 * 图谱文件
	 */
	@TableField(exist = false)
	private Long[] atlasFileIds;
	/**
	 * 测序报告文件
	 */
	@TableField(exist = false)
	private Long[] reportFileIds;
	/**
	 * 序列文摘文件
	 */
	@TableField(exist = false)
	private Long[] abstractFileIds;
	/**
	 * 其他文件
	 */
	@TableField(exist = false)
	private Long[] otherFileIds;
	
	/**
	 * 图谱文件列表
	 */
	@TableField(exist = false)
	private List<FileManage> atlasFileList;
	/**
	 * 测序报告文件列表
	 */
	@TableField(exist = false)
	private List<FileManage> reportFileList;
	/**
	 * 序列文摘文件列表
	 */
	@TableField(exist = false)
	private List<FileManage> abstractFileList;
	/**
	   * 其他文件列表
	 */
	@TableField(exist = false)
	private List<FileManage> otherFileList;

	/**
	   * 试剂质粒片段列表
	 */
	@TableField(exist = false)
	private List<ReagentPlasmidFragment> fragmentList;

}
